﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Chilis.Marketing.Common;
using Chilis.Marketing.Business.Logic;
using Chilis.Marketing.Business.Entity;

public partial class Gral_DetRol : System.Web.UI.Page
{
    #region ATRIBUTOS

    private Constantes.ACCION accion;
    private BLActividad actividadBL;
    private BLRecursoRol recursoRolBL;

    #endregion

    #region PROPIEDADES
    #endregion

    #region METODOS

    private void ActivarControles(bool activo)
    {
        this.txtCodigoActividad.Enabled = false;
        this.txtNombreActividad.Enabled = false;
        this.txtCodigo.Enabled = false;
        this.txtDescripcion.Enabled = activo;
        this.txtCantidad.Enabled = activo;
        this.txtCosto.Enabled = activo;
    }

    private void CargarDatos(int idRolActividad)
    {
        this.actividadBL = new BLActividad();
        BEActividad actividadBE = this.actividadBL.obtenerActividadPorRecursoRolId(idRolActividad);
        if (actividadBE != null)
        {
            this.txtCodigoActividad.Text = actividadBE.IdActividad.ToString().PadLeft(5, '0');
            this.txtNombreActividad.Text = actividadBE.Descripcion.ToString();

            if (actividadBE.LRecurso != null && actividadBE.LRecurso.Count > 0)
            {
                BERecursoRol recursoRolBE = (BERecursoRol)actividadBE.LRecurso[0];
                this.txtCodigo.Text = recursoRolBE.IdRecurso.ToString().PadLeft(5, '0');
                this.txtDescripcion.Text = recursoRolBE.Descripcion.ToString();
                this.txtCantidad.Text = recursoRolBE.Cantidad.ToString();
                this.txtCosto.Text = String.Format("{0:N}", recursoRolBE.Costo);                
            }
        }
    }

    private BERecursoRol ObtenerRecursoRolBE_WebForm()
    {
        BERecursoRol recursoRolBE = new BERecursoRol();
        if (this.txtCodigo.Text != "")
        {
            int tempIdRecurso = Constantes.idValorNulo;
            int.TryParse(this.txtCodigo.Text, out tempIdRecurso);
            recursoRolBE.IdRecurso = tempIdRecurso;
        }

        recursoRolBE.Descripcion = this.txtDescripcion.Text.Replace("'", "''");

        if (this.txtCantidad.Text != string.Empty)
        {
            int tempCantidad = 0;
            int.TryParse(this.txtCantidad.Text, out tempCantidad);
            if (tempCantidad != 0)
            {
                recursoRolBE.Cantidad = tempCantidad;
            }
        }
        if (this.txtCosto.Text != string.Empty)
        {
            double tempCosto = 0;
            double.TryParse(this.txtCosto.Text, out tempCosto);
            if (tempCosto != 0)
            {
                recursoRolBE.Costo = tempCosto;
            }
        }
        recursoRolBE.Order_by = (char)Constantes.ORDENAR_POR.CODIGO;
        recursoRolBE.De_forma = (char)Constantes.DE_FORMA.ASCENDENTE;

        return recursoRolBE;
    }

    private void CargarTitulos(string tituloTxt)
    {
        this.lblTitulo.Text = tituloTxt;
    }

    private void CargarActividad(int idActividad)
    {
        this.actividadBL = new BLActividad();
        BEActividad actividadBE = this.actividadBL.obtenerActividadPorId(idActividad);
        if (actividadBE != null)
        {
            this.txtCodigoActividad.Text = actividadBE.IdActividad.ToString().PadLeft(5, '0');
            this.txtNombreActividad.Text = actividadBE.Nombre;
        }
    }

    #endregion

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                ControlHelper.RegisterClientScriptFile(this, "jquery.js", true);
                ControlHelper.RegisterClientScriptFile(this, "json2.js", true);
                ControlHelper.RegisterClientScriptFile(this, "thickbox.js", true);

                ControlHelper.RegisterClientScriptFile(this, "jshashtable.js", true);
                ControlHelper.RegisterClientScriptFile(this, "numberformatter.js", true);
                ControlHelper.RegisterClientScriptFile(this, "general.js", true);


                Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
                if (Request.QueryString["acc"] != null)
                {
                    accion = Constantes.ObtenerEnumAccion(Request.QueryString["acc"]);
                }
                switch (accion)
                {
                    case Constantes.ACCION.NINGUNO:
                        break;
                    case Constantes.ACCION.VER:
                        this.CargarTitulos(Mensajes.txtTitulo_RolVer);
                        //this.CargarActividad();
                        this.btnAceptar.Visible = false;
                        if (Request.QueryString["id"] != null)
                        {
                            int idRolActividad = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idRolActividad);
                            this.ActivarControles(false);
                        }
                        break;
                    case Constantes.ACCION.NUEVO:
                        this.CargarTitulos(Mensajes.txtTitulo_RolNuevo);
                        if (Request.QueryString["idac"] != null)
                        {
                            int idActividad = Constantes.idValorNulo;
                            int.TryParse(Request.QueryString["idac"], out idActividad);
                            this.CargarActividad(idActividad);
                        }
                        this.ActivarControles(true);
                        break;
                    case Constantes.ACCION.MODIFICAR:
                        this.CargarTitulos(Mensajes.txtTitulo_RolModificar);
                        //this.CargarActividad();
                        if (Request.QueryString["id"] != null)
                        {
                            int idRolActividad = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idRolActividad);
                            this.ActivarControles(true);
                        }
                        break;
                    case Constantes.ACCION.ELIMINAR:
                        this.CargarTitulos(Mensajes.txtTitulo_RolEliminar);
                        //this.CargarActividad();
                        if (Request.QueryString["id"] != null)
                        {
                            int idRolActividad = int.Parse(Request.QueryString["id"].ToString());
                            this.CargarDatos(idRolActividad);
                            this.ActivarControles(false);
                        }
                        break;
                    case Constantes.ACCION.ASOCIAR:
                        break;
                    case Constantes.ACCION.APROBAR:
                        break;
                    case Constantes.ACCION.GENERAR_REPORTE:
                        break;
                    default:
                        break;
                }

                this.txtCosto.Attributes.Add("OnBlur", String.Format("formateaNumero('{0}');", this.txtCosto.ClientID));
            }
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_MostrarDetalle + "&descError=" + ex.Message, false);
        }
    }

    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        try
        {
            Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
            if (Request.QueryString["acc"] != null)
            {
                accion = Constantes.ObtenerEnumAccion(Request.QueryString["acc"]);
            }

            BEActividad actividadBE = null;
            if (this.txtCodigoActividad.Text != string.Empty)
            {
                int tempIdActividad = Constantes.idValorNulo;
                int.TryParse(this.txtCodigoActividad.Text, out tempIdActividad);
                actividadBE = new BEActividad();
                actividadBE.IdActividad = tempIdActividad;
            }
            //if (!ValidarDatosIngreso())
            //{
            //    return;
            //}

            this.recursoRolBL = new BLRecursoRol();
            BERecursoRol recursoRolBE = this.ObtenerRecursoRolBE_WebForm();
            string msjeError = "";
            string msjeExitoOperacion = "";
            string msjeErrorOperacion = "";
            bool result = false;

            switch (accion)
            {
                case Constantes.ACCION.NINGUNO:
                    break;
                case Constantes.ACCION.VER:
                    break;
                case Constantes.ACCION.NUEVO:
                    msjeErrorOperacion = Mensajes.msjeError_InsertarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_InsertarRegistro;
                    result = true;
                    result = this.recursoRolBL.insertarRecursoRol(recursoRolBE, actividadBE);
                    break;
                case Constantes.ACCION.MODIFICAR:
                    msjeErrorOperacion = Mensajes.msjeError_ModificarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_ModificarRegistro;
                    result = this.recursoRolBL.modificarRecursoRol(recursoRolBE, actividadBE);
                    break;
                case Constantes.ACCION.ELIMINAR:
                    msjeErrorOperacion = Mensajes.msjeError_EliminarRegistro;
                    msjeExitoOperacion = Mensajes.msjeExito_EliminarRegistro;
                    actividadBE.Estado = Constantes.ESTADO.INACTIVO;
                    result = this.recursoRolBL.eliminarRecursoRol(recursoRolBE);
                    break;
                case Constantes.ACCION.ASOCIAR:
                    break;
                case Constantes.ACCION.APROBAR:
                    break;
                case Constantes.ACCION.GENERAR_REPORTE:
                    break;
                default:
                    break;
            }

            if (result == false)
            {
                Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_General + "&descError=" + msjeError, false);
            }
            else
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append(@"<script language='javascript'>");
                sb.Append(@"parent.location.reload(1);");
                sb.Append(@"self.parent.tb_remove();");
                sb.Append(@"</script>");

                if (!ClientScript.IsStartupScriptRegistered("JSScriptDetRol"))
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "JSScriptDetRol", sb.ToString());
                }
            }

        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_General + "&descError=" + ex.Message, false);
        }
    }

    #endregion
}